package com.snail.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;


import com.snail.model.dto.user.DeptQueryDTO;
import com.snail.model.dto.user.DeptSaveDTO;
import com.snail.model.pojo.user.SysDept;
import com.snail.model.vo.user.DeptVO;
import com.snail.result.Result;

import java.util.List;

/**
 * @author Administrator
 * @description 针对表【sys_dept(部门表)】的数据库操作Service
 * @createDate 2024-07-09 16:11:56
 */
public interface SysDeptService extends IService<SysDept> {
    
    /**
     * 分页查询部门信息
     * @param page 分页参数
     * @param queryDTO 查询条件
     * @return 部门分页结果
     */
    IPage<DeptVO> queryDeptPage(Page<SysDept> page, DeptQueryDTO queryDTO);
    

    Result getDeptByUserId();
    
    /**
     * 根据用户ID修改部门信息
     * @param userId 用户ID
     * @param deptSaveDTO 部门信息
     * @return 是否成功
     */
    Result<Void> updateDeptByUserId(Long userId, DeptSaveDTO deptSaveDTO);

    Result addDept(DeptSaveDTO deptSaveDTO);

    /**
     * 更新部门信息
     * @param deptSaveDTO 部门信息
     * @return 操作结果
     */
    Result<Void> updateDept(DeptSaveDTO deptSaveDTO);

    /**
     * 删除部门(逻辑删除)
     * @param id 部门ID
     * @return 操作结果
     */
    Result<Void> deleteDept(Long id);

    /**
     * 批量删除部门(逻辑删除)
     * @param ids 部门ID列表
     * @return 操作结果
     */
    Result<Void> deleteDeptBatch(List<Long> ids);
    
    /**
     * 获取部门详情（包含备注信息）
     * @param deptId 部门ID
     * @return 部门详情
     */
    DeptVO getDeptDetail(Long deptId);
}